// Copyright (c) 2008, 
// Marc Speck, http://www.faindu.com
// All Rights Reserved. The following is Source Code and is subject to all restrictions 
// on such code as contained in the license accompanying this product.
package com.faindu.editImage.base
{
	import com.faindu.editImage.EditImage;
	
	import mx.core.IUIComponent;
	
/**
 * Interface for BaseTool
 */
public interface IBaseTool
{
	/**
	 * Allows or disallows users to use the transformation like move, rotate, scale, etc.
	 * <code>ImageManipulations.disableAllTools()</code> disables all tools
	 * 
	 * @see com.faindu.editImage.manipulations.ImageManipulations#disableAllTools()
	 */
	function get enabled():Boolean 
	function set enabled( value:Boolean ):void 
	
	/**
	 * Allows or disallows users to use the transformation like move, rotate, scale, etc.
	 */
	function get visible():Boolean 
	function set visible( value:Boolean ):void 
	
	/**
	 * Initiate the tool. <code>init</code> adds event listeners, controls to the display list
	 * and initiates all controls.
	 * 
	 * @param editImage the instance of the EditImage.
	 * @param startInteractionHandler a reference to the <code>startInteractionHandler</code>
	 * in the instance of EditImage.
	 */
	function init( editImage:EditImage, startInteractionHandler:Function ): void
	
	/**
	 * Reset the tool.
	 */
	function reset(): void
	
	/**
	 * Draw all the controls.
	 */
	function draw(): void
	
}
}